Questo dataset si basa sulle vendite di auto che include informazioni su diversi concessionari di vendita di auto e il modello delle auto vendute in diverse regioni degli Stati Uniti ed é reperibile al seguente link: https://www.kaggle.com/datasets/sachinsachin/car-sales
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
df = pd.read_csv("Car Sales.CSV",sep=';')
df["Date"] = pd.to_datetime(df["Date"],format="%d.%m.%Y")
fig = px.histogram(data_frame = df, x = "Price in thousands")
fig.update_layout(
title="Distribuzione del prezzo delle auto per quantità",
xaxis=dict(title="Prezzo in migliaia [$]"),
yaxis=dict(title="Quantità"),
width=1000,
height=600,
)
fig.show()
fig = px.histogram(data_frame = df, x = "Annual Income")
fig.update_layout(
title="Distribuzione reddito annuale",
yaxis=dict(title="Quantità"),
xaxis=dict(title="Reddito annuale"),
width=1000,
height=600,
)
fig.show()
fig = px.scatter(df,
x= "Annual Income",
y= "Price in thousands",
title="Prezzo delle auto in relazione al reddito",
)
fig.update_layout(
yaxis=dict(title="Prezzo in migliaia [$]"),
xaxis=dict(title="Reddito annuale"),
width=1000,
height=800,
)
fig.show()
Si puo' osservare che tra il reddito annuale e il prezzo non c'e una relazione, infatti questa e' stata verificata nuovamente calcolando il coefficiente di correlazione che era pari a 0, il che conferma che non esiste una relazione lineare tra le due variabili.
Le 10 marche su cui si lavora sono: Ford, Toyota, Mitsubishi, Volkswagen, BMW, Nissan, Hyundai, Porsche, Mercedes-B, Audi. L'analisi é voluta svolgersi sul massimo reddito, poiché analizzando il reddito medio o il reddito minimo risultavano poche differenze se non nulle.
df_marche = df[(df["Company"] == "Ford") | (df["Company"]=="Toyota")
| (df["Company"]=="Mitsubishi") | (df["Company"]=="Volkswagen")
| (df["Company"]=="BMW") | (df["Company"]=="Nissan")
| (df["Company"]=="Hyundai") | (df["Company"]=="Porsche")
| (df["Company"]=="Mercedes-B") | (df["Company"]=="Audi")]
df_marche = df_marche.sort_values(by=["Company"])
df_reddito_marchio = df_marche["Annual Income"].groupby(df_marche["Company"]).max().sort_values(ascending=False)
df_reddito_marchio = df_reddito_marchio.sort_index()
valori = df_reddito_marchio.values
indici = df_reddito_marchio.index
fig = px.histogram(data_frame = df, x = "Annual Income")
fig.update_layout(
title="Distribuzione reddito annuale",
yaxis=dict(title="Quantità"),
xaxis=dict(title="Reddito annuale"),
width=1000,
height=600,
)
fig.show()
fig = px.histogram(df_marche,
x= "Company",
)
fig.update_layout(
title="Distribuzione delle auto su 10 marche",
yaxis=dict(title="Quantità"),
xaxis=dict(title="Marchio", categoryorder='category ascending'),
width=1000,
height=800,
)
fig.show()
fig = px.bar(x=indici,y=valori)
fig.update_layout(
title="Distribuzione reddito massimo su 10 marche",
xaxis=dict(title="Marchio",categoryorder='total descending'),
yaxis=dict(title="Reddito"),
width=1000,
height=600,
)
fig.show()
Si vede dal grafico che il marchio predominante é Mercedes-B, un marchio Europeo. Inoltre si nota che alcuni marchi risultano meno acquistati rispetto al reddito, quando invece ci si aspetta il contrario, per esempio: Porsche, Audi, Volkswagen; quando invece si tende ad andare versi altri marchi come: Hyundai, BMW, Ford.
Le 10 marche su cui si lavora sono: Ford, Toyota, Mitsubishi, Volkswagen, BMW, Nissan, Hyundai, Porsche, Mercedes-B, Audi.
df["Tipologia di auto"] = np.where(df["Date"].dt.year == df["Year"],"NUOVA","USATA")
df_marche_usate_nuove = df.copy(deep=True)
df_marche_usate_nuove = df_marche_usate_nuove[(df_marche_usate_nuove["Company"] == "Ford") | (df_marche_usate_nuove["Company"]=="Toyota")
| (df_marche_usate_nuove["Company"]=="Mitsubishi") | (df_marche_usate_nuove["Company"]=="Volkswagen")
| (df_marche_usate_nuove["Company"]=="BMW") | (df_marche_usate_nuove["Company"]=="Nissan")
| (df_marche_usate_nuove["Company"]=="Hyundai") | (df_marche_usate_nuove["Company"]=="Porsche")
| (df_marche_usate_nuove["Company"]=="Mercedes-B") | (df_marche_usate_nuove["Company"]=="Audi")]
df_marche_usate_nuove = df_marche_usate_nuove.sort_values(by=["Company"])
fig = px.histogram(df_marche_usate_nuove,
y= "Company",
orientation="h",
)
fig.update_layout(
title="Distribuzione delle auto su 10 marche",
xaxis=dict(title="Quantità"),
yaxis=dict(title="Marchio", categoryorder='category descending'),
width=1000,
height=800,
)
fig.show()
fig = px.histogram(df_marche_usate_nuove,
y= "Company",
color = "Tipologia di auto",
orientation="h",
barmode="stack",
barnorm="percent")
fig.update_layout(
title="Distribuzione delle auto per marchio",
legend_title="Tipologia di auto",
xaxis=dict(title="Percentuale", ticksuffix="%"),
yaxis=dict(title="Marchio", type='category', categoryorder='category descending'),
width=1000,
height=600,
)
fig.update_traces(textposition="inside", texttemplate= "%{x:.1f}%")
fig.show()
Si nota che per quanto riguarda la hyundai domina la tendenza a comprare un'auto d'occasione e mentre per la Volkswagen si ha una percentuale molto bassa rispetto agli altri marchi.
Le 10 marche su cui si lavora sono: Ford, Toyota, Mitsubishi, Volkswagen, BMW, Nissan, Hyundai, Porsche, Mercedes-B, Audi.
fig = px.box(df_marche, orientation="h", y="Company", x="Price in thousands")
fig.update_layout(
title="Distribuzione del prezzo su 10 marche",
yaxis=dict(title="Marchio"),
xaxis=dict(title="Prezzo in migliaia [$]"),
width=1000,
height=800,
)
fig.show()
Si puo' notare che i dati sono asimmetrici e che sono tendenti al 25° percentile. Ci sono alcuni casi fuori dal range iterquartile dei box che possono essere dovuti a errori o possibile natura insolita. Inoltre Hyundai e Porsche hanno un range molto inferiore rispetti agli altri.
L'analisi é centrata sull'avere un'idea della distribuzione di auto nuove di alcune marche sui concessionari, ciò non implica dover visualizzare ogni singolo marchio.
df_auto_nuove = df[(df["Date"].dt.year == df["Year"])]
t_raccolta = df_auto_nuove.groupby(["Dealer_Name","Company"]).size().unstack(fill_value=0)
fig = px.histogram(data_frame = df_auto_nuove, x = df_auto_nuove["Company"], title="Distribuzione marche - Vendita auto nuove")
fig.layout["xaxis"]["title"] = "Marchio"
fig.layout["yaxis"]["title"] = "Quantità"
fig.update_layout(
xaxis=dict(categoryorder='total descending'),
)
fig.show()
fig = px.imshow(t_raccolta,width=1000, height=800, title = "Distribuzione marche - Vendita auto nuove per concessionario")
fig.update_layout(
legend_title="Quantità",
xaxis=dict(title="Marchio"),
yaxis=dict(title="Concessionario"),
)
fig.show()
Si puo' notare maggiore concentrazione da parte dei ultimi 10 concessionari, dove c'é una tendenza ai marchi europei.
L'analisi é centrata sull'avere un'idea della distribuzione di auto d'occasione di alcune marche sui concessionari, ciò non implica dover visualizzare ogni singolo marchio.
df_auto_occasione = df[(df["Date"].dt.year != df["Year"])]
tx_raccolta = df_auto_occasione.groupby(["Dealer_Name","Company"]).size().unstack(fill_value=0)
fig = px.histogram(data_frame = df_auto_occasione, x = df_auto_occasione["Company"], title="Distribuzione marche - Vendita auto d'occasione")
fig.layout["xaxis"]["title"] = "Marchio"
fig.layout["yaxis"]["title"] = "Quantità"
fig.update_layout(
xaxis=dict(categoryorder='total descending'),
)
fig.show()
fig = px.imshow(tx_raccolta,width=1000, height=800, title = "Distribuzione vendite - Auto d'occasione per concessionario")
fig.update_layout(
legend_title="Quantità",
xaxis=dict(title="Marchio"),
yaxis=dict(title="Concessionario"),
)
fig.show()
Si puo' notare maggiore concentrazione da parte dei ultimi 10 concessionari, dove c'é una tendenza ai marchi americani.